package model

import "C"
import (
	"errors"
	"fmt"
	"github.com/garyburd/redigo/redis"
)

var (
 	Pool *redis.Pool
 	C redis.Conn
 	err error
)



func init() {
	Pool = &redis.Pool{     //实例化一个连接池
		MaxIdle:16,    //最初的连接数量
		// MaxActive:1000000,    //最大连接数量
		MaxActive:0,    //连接池最大连接数量,不确定可以用0（0表示自动定义），按需分配
		IdleTimeout:60,    //连接关闭时间 300秒 （300秒不使用自动关闭）
		Dial: func() (redis.Conn ,error){     //要连接的redis数据库
			return redis.Dial("tcp","localhost:6379")
		},
	}
}


type RedisConn struct {

}

func (c *RedisConn) SetProblems(key string,value string) error{
	C = Pool.Get()
	_,err = C.Do("set",key,value,"Ex","60")
	if err != nil {
		str := fmt.Sprintf("-- > 添加信息失败 \n实际错误信息：%v",err)
		logFmt.Warning(str)
		err = errors.New(str)
		return err
	}
	return nil
}



func (c *RedisConn) GetProblems(key string) (interface{}, error){
	C = Pool.Get()
	res,err := C.Do("get",key)
	if err != nil {
		str := fmt.Sprintf("-- > 程序错误读取缓存失败 \n实际错误信息：%v",err)
		logFmt.Warning(str)
		err = errors.New(str)
		return nil,err
	}
	if res == nil {
		str := fmt.Sprintf("-- > 缓存有效期失效 \n实际错误信息：%v",err)
		logFmt.Warning(str)
		err = errors.New(str)
		return nil,err
	}
	return res,nil
}